home *** CD-ROM | disk | FTP | other *** search
/ isnet Internet / Isnet Internet CD.iso / prog / hiz / 09 / 09.exe / adynware.exe / perl / lib / fastcwd.pl < prev    next >
Encoding:
Text File  |  1999-12-28  |  596 b   |  30 lines

  1.  
  2. sub fastcwd {
  3.     local($odev, $oino, $cdev, $cino, $tdev, $tino);
  4.     local(@path, $path);
  5.     local(*DIR);
  6.  
  7.     ($cdev, $cino) = stat('.');
  8.     for (;;) {
  9.         ($odev, $oino) = ($cdev, $cino);
  10.         chdir('..');
  11.         ($cdev, $cino) = stat('.');
  12.         last if $odev == $cdev && $oino == $cino;
  13.         opendir(DIR, '.');
  14.         for (;;) {
  15.             $_ = readdir(DIR);
  16.             next if $_ eq '.';
  17.             next if $_ eq '..';
  18.  
  19.             last unless $_;
  20.             ($tdev, $tino) = lstat($_);
  21.             last unless $tdev != $odev || $tino != $oino;
  22.         }
  23.         closedir(DIR);
  24.         unshift(@path, $_);
  25.     }
  26.     chdir($path = '/' . join('/', @path));
  27.     $path;
  28. }
  29. 1;
  30.